This invention relates to distributed task
Glossary of Terms
Below, for convenience, we set forth a short glossary of terms which supplement explanations of certain terms used in the main text.
xe2x80x9cNetworkxe2x80x9d is set of computers and a communication medium which interconnects them.
xe2x80x9cNetwork participantxe2x80x9d is an entity that may require a task to be done and has access to a distributed network.
xe2x80x9cPacketxe2x80x9d is an elemental container for carrying data in a distributed system; it typically includes addressing information used in routing.
xe2x80x9cProtocolxe2x80x9d is a set of commonly agreed rules which define the structure, format, procedure and/or function that must be followed for elements of a distributed system to communicate with each other.
xe2x80x9cResourcexe2x80x9d is information or a service accessible at a location in a distributed system.
xe2x80x9cTaskxe2x80x9d is something capable of being done using one or more resources.
xe2x80x9cDigital objectxe2x80x9d generally means sequences of digits (containing digital representations of virtually any kind of information) including an associated unique identifier, called its xe2x80x9chandle.xe2x80x9d
xe2x80x9cRepositoryxe2x80x9d is a resource that stores digital objects and makes them accessible over the network according to applicable terms and conditions.
xe2x80x9cDatabasexe2x80x9d is an organized body of information structured so as to analyze queries and furnish replies. A digital object may itself contain a database or elements of a database.
xe2x80x9cRights holderxe2x80x9d is a person or entity which has legally enforceable xe2x80x9crightsxe2x80x9d in a digital object.
xe2x80x9cDistributed systemxe2x80x9d may include a Knowbot system, as well as components which are outside the Knowbot system, such as magnetic diskettes, optical disks, and other large scale storage media, including digital representations of data on paper.
xe2x80x9cKnowbot programxe2x80x9d is an executable computer program, which may be capable of moving from one location to another. It includes an xe2x80x9cinstruction sequencexe2x80x9d which defines a series of steps to perform a task and also includes other data.
xe2x80x9cCourierxe2x80x9d is used, on occasion, to refer to an instance of a Knowbot program which is engaged in moving through a distributed system.
xe2x80x9cKnowbot systemxe2x80x9d is a system (including programs) for creating, storing, and moving Knowbot programs among computers, executing the programs, and moving to and storing the results as needed at destination computers or the Network.
xe2x80x9cKnowbot service stationxe2x80x9d is software and/or hardware operating at a location on a network and capable of actions such as generating, storing, executing and deleting Knowbot programs.
xe2x80x9cKnowbot service environmentxe2x80x9d is a medium for handling Knowbot programs and comprises a collection of Knowbot service stations. The Knowbot system provides the service environment.
xe2x80x9cKnowbot frameworkxe2x80x9d is a conceptual model which defines a currency (Knowbot programs) for task execution and a medium (Knowbot service environment) for handling the programs.
xe2x80x9cNotification authorityxe2x80x9d is a part of the Knowbot service environment which stores information about operations performed by Knowbot programs.
xe2x80x9cProspective Knowbot programsxe2x80x9d are Knowbot programs received by a Knowbot service station from a source outside the Knowbot service environment.
Introduction
In the most basic sense, the invention concerns itself with a system (we call it the Knowbots system) for creating, storing and moving programs among computers, executing the programs and moving to and storing the results as needed at destination computers. While most or all of the computers may be xe2x80x9conlinexe2x80x9d and part of a general computer networking environment, the concepts apply also to offline movement of programs via other media such as magnetic diskettes, optical disks, and other large scale storage media, including digital representations of data on paper (such as bar coding). Moreover, the computers in the system need not be simultaneously connected in an underlying network at all times; this connectivity may come and go from time to time. The label xe2x80x9csystemxe2x80x9d generally implies some systematic regularity in the way these programs are created and managed, the way they interact with each other, the way they interact with stored information, and the way they interact with external systems, including people and programs which are considered to exist outside the scope of the definition of the programs and computers which are part of the system.
For purposes of explanation, we sometimes use the term xe2x80x9cKnowbot(copyright) systemxe2x80x9d (Knowbot(copyright) is a registered trademark of the Corporation for National Research Intiatives) to refer to portions or all of the system. The Knowbot(copyright) system has well-defined boundaries which make it possible to distinguish the components that are part of the system from components which are outside of it and which interact with it only in ways defined by the system. What is inside the Knowbot system and what is outside may together be called a distributed system. The parts which are considered inside the system interact with other parts only in prescribed ways. The rules which define proper behavior are, in effect, specifications which determine how a component can be created and can operate so as to always be considered a properly functioning component of the system.
The Knowbot(copyright) system is largely a software system whose components are programs which operate in prescribed ways. Software operates in a computer-based (hardware) environment and often in association with software-based operating systems which are the basic programs that create, allocate and manage resources on the hardware. Underlying the basic design of the Knowbot(copyright) system is the assumption that the computers on which the system is operated have operating systems which provide functions needed by the Knowbot(copyright) system running xe2x80x9con top ofxe2x80x9d the operating systems. Any operating system would be suitable if it supports the embedding of the underlying computers in a data communications (networking) environment and is capable of xe2x80x9ctime-sharingxe2x80x9d multiple programs running concurrently under the overall control of the operating system. In addition, the programs (called Knowbot programs) which are capable of moving between computers must contain sufficient information to allow them to begin or resume execution as intended and the computers must provide the necessary support environment such as interpreters, schedulers, and storage. The Knowbot(copyright) system may be implemented atop a wide variety of hardware and operating systems.
It is also assumed that the computers that are part of the Knowbots system are at least intermittently connected to a common communication network so that information can pass from one computer to another from time to time, in accordance with the rules of behavior of the Knowbot(copyright) system.
The Knowbot(copyright) system links together into a common operating environment many diverse and distinct systems and resources and serves as an interconnection system between them. Information about one system or its resources may be communicated to another system via the intermediary mechanism, the Knowbot(copyright) system. The Knowbot(copyright) system may itself enable tasks to be carried out distinct from the systems and resources which participate. The Knowbots system may also facilitate these participating systems and resources to carry out a given task.
Below we discuss concepts which, when taken together, describe how a collection of software, hardware, and communication facilities can be organized to function as a Knowbot(copyright) system. Virtually all of the concepts are based on software artifacts behaving in accordance with a set of prescribed rules. These artifacts include xe2x80x9crunning programsxe2x80x9d and also xe2x80x9cdigital objectsxe2x80x9d that are stored away in xe2x80x9crepositoriesxe2x80x9d for later access. The concepts of the invention generally are rooted in the definition and behavior of software artifacts rather than on the specifics of any particular hardware, communication network, or operating system. However, if desired, portions or all of the software could be replaced in certain instances with a system of integrated circuits (e.g., semiconductor chips) if and when the technology of very large scale integration permits.
Knowbot(copyright) programs are the basic software elements that execute in a given machine. An instance of a Knowbot(copyright) program is a Courier, the form taken by a Knowbot(copyright) program as it moves from one computer to another within the system or when it interfaces with the external world. Knowbot(copyright) programs can contain (carry) information (data) which can be made manifest in a variety of ways. Provision is made in the Knowbot(copyright) system for dealing with the arrival and departure of Knowbot(copyright) programs, for the exchange of information between Knowbot(copyright) programs and other Knowbot(copyright) programs, and for the interaction of Knowbot(copyright) programs with other parts of the Knowbot(copyright) system including information access subsystems called xe2x80x9crepositoriesxe2x80x9d and with external subsystems, including people, by means of visible, audible, or other palpable manifestations.
An important characteristic of Knowbot(copyright) programs is their ability to protect data on behalf of rights holders, to control its application in accordance with stated terms and conditions and to interpret data, rendering it in multiple ways to be visible, audible or otherwise palpable and in such a way as to permit human interactions to influence the choice of renderings.
Because the Knowbot(copyright) system has a software based open-architecture interconnection structure, it is useful to discuss, another highly successful software-based open-architecture interconnection system known as the Internet. The Internet is a rapidly growing, global xe2x80x9cnetwork of networksxe2x80x9d which links millions of computers and tens of thousands of networks together. The Internet is realized through a set of minimum requirements for linking computers to each other by way of a xe2x80x9cpacket switchingxe2x80x9d environment and through observing certain format and procedural conventions (xe2x80x9cprotocolsxe2x80x9d) that govern how and when and in what form information is exchanged among the computers which are part of the Internet.
As seen in FIG. 1, the Internet 10 provides a communication framework 12 for computer users located essentially anywhere in the world. Any computer 14a may send digital information to any other user 14b by observing a commonly understood packet protocol 16 and a commonly accepted addressing scheme 18. The packet protocol sets minimum rules for the structure and handling of packets which carry the digital information, including the address of the recipient. The addressing scheme sets minimal rules for addressing assignments including prevention of duplicate addresses. A computer that follows the packet protocol and the addressing scheme may be relatively confident that a packet will reach its destination and that the recipient will be able to access the digital information carried in it. On the other hand, the Internet framework makes essentially no attempt to define the physical hardware/software network components 20 that are used to format, transmit, receive, disassemble or assemble packets, and instead leaves those matters to users, groups of users, and vendors. This has resulted in an open, distributed market for implementation schemes and products.
Because the hardware/software requirements of the packet protocol are minimal, and essentially any digital information may be carried in them, they provide a xe2x80x9ccurrencyxe2x80x9d 22 for exchange of digital information across a distributed network, just as paper checks provide a legal tender for exchange of economic value. The unambiguous addressing scheme and other aspects of the Internet framework in turn provide a universal medium 24 for exchange of packets, just as the unambiguous transit codes of the Federal Reserve clearinghouse provide a universal medium for exchange of checks. But the Internet framework places no limits on the physical manner in which users may create, transmit, receive, and use packets, just as the clearinghouse system places no restrictions (provided paper size and other check protocol requirements are met) on how checks are created, delivered, received, or used.
The notion of disconnecting the medium and currency for exchange of digital information on a widely distributed network (i.e., the framework) from the physical implementation (suggested by the somewhat disjointed representations 12 and 20 on FIG. 1) is a powerful one and has led to the great success of the Internet, for it permits individuals and non-commercial and commercial enterprises to participate and benefit from the Internet without requiring central control of the implementation. At the same time the Internet community is constantly working to enhance and improve the principles embodied in the commonly accepted Internet framework. This is achieved through a decentralized process in which concepts may be generated from any source, tested, and if found broadly useful, ultimately become part of the accepted framework. In this context it is largely the quality of the proposed principles that generally governs whether they become part of the framework and are widely adopted.
Another powerful feature of the Internet framework and the physical network on which it is implemented is its ability to coexist easily with other frameworks of communication and other physical networks. The Internet currently accommodates many different types of networks and communications media; in principle almost any network or communications media can become part of the Internet.
Finally, the Internet framework is highly scalable which has yielded a relatively easy expansion of the number of users worldwide.
Detailed Description
As seen in FIG. 2, in the invention, a new and more powerful framework (called a Knowbot framework 28) is created not merely for communicating digital information (as in the case of the Internet framework), but for having tasks done on behalf of network participants 30a, 30b using resources available on a distributed system 32 (e.g., the Internet, or another network). Within the phrase xe2x80x9cnetwork participantsxe2x80x9d we include any entity that may require a task to be done, including individuals with standalone personal computers and organizations, as well as computers and other hardware and software in the network. By xe2x80x9ctaskxe2x80x9d we mean anything that is capable of being done by resources on the network; tasks may have a wide range of complexity, and typically they involve more than merely a communication of digital information of the kind effected by delivery of a simple Internet packet containing the digital information; in particular, tasks often involve a process step to be taken at a location that is remote from the location of the entity that requires the task to be done. By xe2x80x9cresourcesxe2x80x9d we mean whatever is available on the network that can contribute to the doing of a task; this could include computer software, stored digital objects and a wide variety of services.
The Knowbot framework defines both a xe2x80x9ccurrencyxe2x80x9d for having tasks of any arbitrary complexity done, and a xe2x80x9cmediumxe2x80x9d for handling the currency as part of getting the tasks done. The currency is called Knowbot programs. A Knowbot program is a mobile emissary of a network participant which assists in executing a task to be done on behalf of the participant. This task may be carried out locally in the user""s system or it may involve interactions with other systems and resources at other locations both local and/or remote. The medium for handling Knowbot programs is called a distributed Knowbot service environment or simply the Knowbot service environment. The Knowbot service environment is distributed as a potentially endless number and variety of what we call Knowbot service stations (software and/or hardware) operating at places on the network. The stations may generate, store, execute and delete Knowbot programs and otherwise perform all allowed operations on Knowbot programs as determined by the Knowbot program itself or by users authorized to take or enable such actions. The Knowbot framework defines a minimal set of rules 38 for the structure of Knowbot programs (for example, the program must include some information related to the task to be done) and a minimal set of rules 40 for the functions to be performed within the Knowbot service environment (for example, that a typical Knowbot service station be able to create, send, receive, monitor, and delete Knowbot programs).
Although we describe below some additional specific principles for Knowbot programs and the service environment, in general it is contemplated that enhancements to the Knowbot framework will be developed in a similar manner as for the Internet framework, that is by a combination of free market forces with respect to hardware and software implementations, and by an open standards development process within the Knowbot user community with respect to framework principles. Like the Internet framework, the Knowbot framework is meant to coexist freely with other techniques for doing tasks within a network and to be easily expandable.
In general, in one aspect, the invention features enabling tasks to be done on a network of multiple computers interconnected by communication links. Some or all of these computers may also be internal to the network. We use the term Courier, on occasion, to refer to a Knowbot program that is being sent from one service station to another, or is being exported (in some fashion) from the environment. At each of the computers, Knowbot programs may be received and transmitted on the communication links, and may be stored and created; and execution of the tasks associated with the Knowbot programs may be advanced. Each Knowbot program includes a globally unique identifier; navigation information that may define a route through the network (when applicable); and information concerning the task to be done. Knowbot programs which are clones of each other will use the same basic identifier with a version number or some other delimiter to distinguish among them.
In general, in another aspect, the invention features enabling a computer on a network of multiple computers interconnected by communication links to participate in a distributed Knowbot service environment by the steps recited above.
Implementations of the invention may include one or more of the following features.
A participant at a computer (e.g., a person or a process or a Knowbot program running on the computer) may define the task to be executed. Information related to the defined task may be embedded in one of the Knowbot programs. Task information contained in Knowbot programs may be interpreted. The step of advancing the execution of tasks may include: creating additional Knowbot programs, interacting with other Knowbot programs, interacting with repositories of digital objects; querying a database of information; applying stored expert knowledge; protocol transformation; providing a directory service identifying other locations which provide services related to the task; making a security determination; providing a xe2x80x9cwhat""s newxe2x80x9d service to identify newly available information; providing a xe2x80x9cclippingxe2x80x9d service which extracts information; providing a version control service for managing versions of the Knowbot program; responding to actions of a user by obtaining execution of the task at another location without necessarily indicating to the user that the execution occurred at the other location; providing a method for determining the structure of a Knowbot program (e.g., to determine if a digital object is contained in the Knowbot program and to access the element; creating a derivative work from an existing work; generating a Knowbot program that contains another Knowbot program, or a digital object, or other data; and passing a message from a source Knowbot program to a target Knowbot program at a different location.
The information concerning a task to be done may include interpretable or executable instructions. The Knowbot program may include data in the form of a digital object or a Knowbot program (a Knowbot program may itself be a digital object). The digital object may include protocol transformation information.
In general, in another aspect, the invention features executing a local query of a remote database (or a remote knowledge-based system) via a communication channel of a network where the local query complies with a query protocol and the remote database is responsive to queries which comply with a database protocol. A Knowbot program is locally generated based on the local query and in compliance with a Knowbot program protocol. The Knowbot program is sent to the remote database via the communication channel of the network. At the remote database, the Knowbot program is serviced by querying the database in accordance with the database protocol. The results of the query are returned from the remote database within a return Knowbot program which complies with the Knowbot program protocol.
Implementations of the invention may include one or more of the following features. The return Knowbot program may be received locally and results may be provided to a user based on the results contained within the return Knowbot program. Additional Knowbot programs may be generated which are based on the local query and comply with the Knowbot program protocol. Each of the additional Knowbot programs may work in parallel on a given database or repository or may be sent to another database. At each of the other databases, the corresponding Knowbot programs may be serviced by querying the other database. The results of the query from each of the other databases may be returned within a return Knowbot program which complies with the Knowbot program protocol. The results contained within the return Knowbot programs may be processed locally to provide a consistent presentation to a user. The consistent presentation to the user may be updated as additional return Knowbot programs are received. The processing may include removing redundant information. The return Knowbot program may be a modified version of the original Knowbot program. Additional Knowbot programs may be generated locally and sent via communication channels of the network. Knowbot programs may be generated as well as received locally.
The query protocol may include a displayable or machine interpretable form, obtained from another program or completed by a user. The Knowbot program protocol may differ from the query protocol and from the database protocol. The Knowbot program protocol may include the identity and syntax of an executable programming language. The Knowbot program may include an executable programming language entry and a navigational entry. The Knowbot program may reach the remote database site by navigating the network, and the navigational portion of the message may include information related to the navigating. The remote database site may send a status Knowbot program indicating the status of execution of the query in machine interpretable form and/or in natural language (e.g., English). At the remote database, the Knowbot program may be stored during the querying of the database, and the querying of the database and the returning of the results may be controlled based on control information contained in the Knowbot program. A Knowbot service station may be used to create, send, receive, and delete Knowbot programs. At the remote database site, a Knowbot service station may be used to create, send, receive, control, process, and delete Knowbot programs. The remote database to which the Knowbot program will be sent is determined locally and automatically based on the local query. Sending the Knowbot program may include conforming the Knowbot program to an electronic mail protocol or a file transfer protocol or other communication method on the network. The Knowbot program protocol may include transformation information.
The Knowbot programs may include authentication information; scheduling information; and terms and conditions information.
Other advantages and features of the invention will become apparent from the following description and from the claims.